package com.situ.day5.cal;

public class CalDemo {

    public static void main(String[] args) {
        //声明成子类类型，new子类对象
        //如果子类重写了getResult()方法，那么调用的就是子类重写后的方法
        //如果子类没有重写，调用的是从父类继承的getResult()
        Add add = new Add(3, 5);
        int result1 = add.getResult();
        System.out.println(result1);

        //声明父类类型，new子类对象
        //如果子类重写了getResult()方法，那么调用的就是子类重写后的方法
        //如果子类没有重写，调用的是从父类继承的getResult()
        Cal cal = new Add(3, 5);
        int result2 = cal.getResult();
        System.out.println(result2);

        cal = new Sub(3, 5);
        int result3 = cal.getResult();
        System.out.println(result3);

        //'Cal' is abstract; cannot be instantiated
        //new出这个类调用getResult()本身没有意义，就把这个方法变成抽象方法，这个类就必须变成抽象类
        //Cal cal1 = new Cal();
        //cal1.getResult();

    }

    public void cal(Add add) {
        add.getResult();
    }

    public void cal(Sub sub) {
        sub.getResult();
    }

    public void cal(Cal cal) {
        cal.getResult();
    }
}
